/*
 * @lc app=leetcode.cn id=49 lang=java
 *
 * [49] 字母异位词分组
 */

// @lc code=start
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {

        // 1. 创建一个HashMap，key为排序后的字符串，value为对应的字符串列表
        Map<String, List<String>> map = new HashMap<>();

        for (String str : strs) {

            // 2. 将字符串排序
            char[] array = str.toCharArray();

            Arrays.sort(array);

            String key = new String(array);
            
            // 3. 将排序后的字符串作为key，将原字符串加入到对应的列表中
            if(!map.containsKey(key)){
                map.put(key, new ArrayList<>());
            }
            map.get(key).add(str);      
        }
        
        return new ArrayList<>(map.values());
    }
}
// @lc code=end

